﻿/*
SINACOR - BMF&Bovespa
Arquivo: IDescontoDiferenciado.cs
Criado em: 20-out-2009 11:31:12
Arquiteto Responsável: RAMelo.7Comm
*/
using System;
using System.ServiceModel;
using System.Collections.Generic;
using Sinacor.Infra.Common.Exceptions;
using Sinacor.Infra.Service.ExceptionHandling;
using Sinacor.Infra.Service.Security.Services;
using Sinacor.Infra.Common;
using Sinacor.Infra.Common.Exceptions.FaultContracts;

namespace Sinacor.Servico.Bovespa.Corretagem.Service.ServiceContract
{
    [ExceptionShielding]
    [ServiceContract(Namespace = "http://www.bovespa.com.br/Sinacor.Servico.Bovespa.Corretagem.Service.ServiceContract", SessionMode = SessionMode.Allowed, Name = "IDescontoDiferenciado")]
    public interface IDescontoDiferenciado
    {
        #region ConsultarDescontosDiferenciados

        /// <summary>
        /// Consulta descontos diferenciados que estão sendo aplicados para uma determinada tabela de corretagem.
        /// </summary>
        /// <param name="request">Parâmetro para consultar descontos diferenciados</param>
        /// <returns>Lista de Desconto Diferenciado</returns>
        [OperationLog]
        [FaultContract(typeof(BusinessFault))]
        [FaultContract(typeof(ValidationFault))]
        [FaultContract(typeof(GeneralFault))]
        [FaultContract(typeof(InvalidSessionFault))]
        [FaultContract(typeof(LicensingFault))]
        [FaultContract(typeof(AccessIsDeniedFault))]
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, Action = "ConsultarDescontosDiferenciados")]
        List<DataContract.Response.DescontoDiferenciadoResponse> ConsultarDescontosDiferenciados(DataContract.Request.FiltroDescontoDiferenciadoRequest request);

        #endregion 

        #region ExcluirDescontoDiferenciado

        /// <summary>
        /// Exclui um determinado desconto que está sendo aplicado para um determinada tabela de corretagem.
        /// </summary>
        /// <param name="request">Parâmetro para excluir um determinado desconto</param>
        [OperationLog]
        [FaultContract(typeof(BusinessFault))]
        [FaultContract(typeof(ValidationFault))]
        [FaultContract(typeof(GeneralFault))]
        [FaultContract(typeof(InvalidSessionFault))]
        [FaultContract(typeof(LicensingFault))]
        [FaultContract(typeof(AccessIsDeniedFault))]
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, Action = "ExcluirDescontoDiferenciado")]
        void ExcluirDescontoDiferenciado(DataContract.Request.FiltroDescontoDiferenciadoChaveRequest request);

        #endregion

        #region IncluirDescontoDiferenciado

        /// <summary>
        /// Inclui um desconto e seu percentual para uma tabela de corretagem
        /// </summary>
        /// <param name="request">Parâmtro para incluir um desconto</param>
        [OperationLog]
        [FaultContract(typeof(BusinessFault))]
        [FaultContract(typeof(ValidationFault))]
        [FaultContract(typeof(GeneralFault))]
        [FaultContract(typeof(InvalidSessionFault))]
        [FaultContract(typeof(LicensingFault))]
        [FaultContract(typeof(AccessIsDeniedFault))]
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, Action = "IncluirDescontoDiferenciado")]
        void IncluirDescontoDiferenciado(DataContract.Request.DescontoDiferenciadoRequest request);
        
        #endregion
    }
}